/*
 * TUIOEventDispatcher.h
 *
 *  Created on: Aug 18, 2010
 *      Author: Ry
 */


#ifndef TUIOEVENTDISPATCHER_H_
#define TUIOEVENTDISPATCHER_H_

#include <vector>
#include <TuioListener.h>
#include <TuioClient.h>
#include <event/EventDispatcher.h>
#include "TUIOEvent.h"
#include "TUIOEventHandler.h"

class TUIOEventDispatcher: public TUIO::TuioListener, public EventDispatcher {
private:
	bool locked;
	TUIO::TuioClient *tuioClient;
	std::vector<TUIOEvent> events;
	std::vector<TUIOEventHandler*> handlers;
public:
	TUIOEventDispatcher();

	void addTuioObject(TUIO::TuioObject *tobj);
	void updateTuioObject(TUIO::TuioObject *tobj);
	void removeTuioObject(TUIO::TuioObject *tobj);
	void addTuioCursor(TUIO::TuioCursor *tcur);
	void updateTuioCursor(TUIO::TuioCursor *tcur);
	void removeTuioCursor(TUIO::TuioCursor *tcur);
	void refresh(TUIO::TuioTime ftime);
	
	TUIOEventHandler* add(TUIOEventHandler *handler);
	void dispatchEvents(float dts);

	virtual ~TUIOEventDispatcher();
};

#endif /* TUIOEVENTDISPATCHER_H_ */

